#include "Niveau.hpp"

Niveau::Niveau(){} 

const void Niveau::push( TableSymb t){
  // il n'est pas nécessaire de contrôler si la table existe déjà dans le vecteur 
  this->tablesSymb.push_back(t);
}

const  vector<TableSymb> Niveau::getTablesSymb(){
  return this->tablesSymb;
}

const TableSymb Niveau::current(){ 
  return this->tablesSymb.back();//end();
}

const Symbole* Niveau::find(unsigned int id){
  vector<TableSymb>::iterator table;
  // parcourir toutes les tables des symboles à partir de la dernière
  for ( table=this->tablesSymb.end() ; table < this->tablesSymb.begin(); table-- ){
    Symbole* symb= table->get(id);
    if(symb!=NULL) return symb;    
  }
  return NULL;
}

const Symbole* Niveau::findInCurrent(unsigned int id){
  //  return this->current()->get(id);
  return this->current().get(id);
}

Niveau::~Niveau(){
   while(!this->tablesSymb.empty()) {
    this->tablesSymb.pop_back();
  }

}
